首页> 外文OA文献 >Algorithmic Verification of Asynchronous Programs
【2h】

Algorithmic Verification of Asynchronous Programs

机译:异步程序的算法验证

代理获取
本网站仅为用户提供外文OA文献查询和代理获取服务,本网站没有原文。下单后我们将采用程序或人工为您竭诚获取高质量的原文,但由于OA文献来源多样且变更频繁,仍可能出现获取不到、文献不完整或与标题不符等情况,如果获取不到我们将提供退款服务。请知悉。

摘要

Asynchronous programming is a ubiquitous systems programming idiom to manageconcurrent interactions with the environment. In this style, instead of waitingfor time-consuming operations to complete, the programmer makes a non-blockingcall to the operation and posts a callback task to a task buffer that isexecuted later when the time-consuming operation completes. A co-operativescheduler mediates the interaction by picking and executing callback tasks fromthe task buffer to completion (and these callbacks can post further callbacksto be executed later). Writing correct asynchronous programs is hard becausethe use of callbacks, while efficient, obscures program control flow. We provide a formal model underlying asynchronous programs and studyverification problems for this model. We show that the safety verificationproblem for finite-data asynchronous programs is expspace-complete. We showthat liveness verification for finite-data asynchronous programs is decidableand polynomial-time equivalent to Petri Net reachability. Decidability is notobvious, since even if the data is finite-state, asynchronous programsconstitute infinite-state transition systems: both the program stack and thetask buffer of pending asynchronous calls can be potentially unbounded. Our main technical construction is a polynomial-time semantics-preservingreduction from asynchronous programs to Petri Nets and conversely. Thereduction allows the use of algorithmic techniques on Petri Nets to theverification of asynchronous programs. We also study several extensions to the basic models of asynchronous programsthat are inspired by additional capabilities provided by implementations ofasynchronous libraries, and classify the decidability and undecidability ofverification questions on these extensions.
机译:异步编程是一种普遍存在的系统编程习惯,用于管理与环境的并发交互。以这种方式,程序员无需等待耗时的操作完成,而是对操作进行了非阻塞调用,并将回调任务发布到任务缓冲区中,该任务缓冲区在耗时的操作完成后会执行。合作调度程序通过选择并执行从任务缓冲区到完成的回调任务来协调交互(这些回调可以发布进一步的回调,以便稍后执行)。编写正确的异步程序很困难,因为使用回调虽然有效,但会掩盖程序控制流。我们提供了一个基于异步程序的正式模型,并为该模型研究了验证问题。我们证明了有限数据异步程序的安全验证问题是expspace-complete。我们表明,有限数据异步程序的活动性验证是可确定的,并且多项式时间等效于Petri Net可达性。可判定性不是显而易见的,因为即使数据是有限状态的,异步程序也构成了无限状态转换系统:程序堆栈和待处理的异步调用的任务缓冲区都可能无界。我们的主要技术结构是从异步程序到Petri Nets的多项式时间语义保留约简。归纳允许在Petri Nets上使用算法技术来验证异步程序。我们还研究了异步程序基本模型的几个扩展,这些扩展受异步库的实现提供的附加功能的启发,并对这些扩展上的验证问题的可判定性和不可判定性进行了分类。

著录项

  • 作者

    Ganty, Pierre; Majumdar, Rupak;

  • 作者单位
  • 年度 2011
  • 总页数
  • 原文格式 PDF
  • 正文语种 {"code":"en","name":"English","id":9}
  • 中图分类

相似文献

  • 外文文献
  • 中文文献
  • 专利
代理获取

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号